import FileSaver from 'file-saver'

/**
 * 格式化时间
 * @param {string | number | Date} time 时间
 * @param {string} format 格式
 * @returns {string} 格式化后的时间
 */
export function formatTime(time, format = 'YYYY-MM-DD HH:mm:ss') {
    if (!time) return ''

    const date = new Date(time)

    const year = date.getFullYear()
    const month = date.getMonth() + 1
    const day = date.getDate()
    const hour = date.getHours()
    const minute = date.getMinutes()
    const second = date.getSeconds()

    return format
        .replace(/YYYY/g, year)
        .replace(/MM/g, month.toString().padStart(2, '0'))
        .replace(/DD/g, day.toString().padStart(2, '0'))
        .replace(/HH/g, hour.toString().padStart(2, '0'))
        .replace(/mm/g, minute.toString().padStart(2, '0'))
        .replace(/ss/g, second.toString().padStart(2, '0'))
}

/**
 * 保存文件
 * @param {Blob} blob 文件内容
 * @param {string} filename 文件名
 */
export function saveFile(blob, filename) {
    FileSaver.saveAs(blob, filename)
}

/**
 * 处理文件下载
 * @param {object} response Axios 响应对象
 * @param {string} filename 文件名
 */
export function handleDownload(response, filename) {
    const blob = new Blob([response.data], { type: response.headers['content-type'] })
    saveFile(blob, filename)
}

/**
 * 防抖函数
 * @param {Function} fn 要执行的函数
 * @param {number} delay 延迟时间
 * @returns {Function} 防抖后的函数
 */
export function debounce(fn, delay = 300) {
    let timer = null
    return function (...args) {
        if (timer) clearTimeout(timer)
        timer = setTimeout(() => {
            fn.apply(this, args)
        }, delay)
    }
} 